#include <head.h>

// 无名信号量
sem_t sem;

void* thread_func_1(void* arg) {
    // 
    printf("我是1号线程\n");
    // P操作
    sem_wait(&sem);

    printf("我是1号线程执行\n");
    sleep(5);

    // V操作
    sem_post(&sem);
}
void* thread_func_2(void* arg) {
    printf("我是2号线程\n");
    // P操作
    sem_wait(&sem);
    
    printf("我是2号线程执行\n");
    sleep(5);
    
    // V操作
    sem_post(&sem);
}

int main() {
    
    // 线程的tid 
    pthread_t thread_1;
    pthread_t thread_2;


    // 初始化信号量，初始值为 0，信号量用于线程间同步
    sem_init(&sem, 0, 5);

    // 创建子线程
    pthread_create(&thread_1, NULL, thread_func_1, NULL);
    pthread_create(&thread_2, NULL, thread_func_2, NULL);



    // 等待子线程完成
    pthread_join(thread_1, NULL);
    pthread_join(thread_2, NULL);

    // 销毁信号量
    sem_destroy(&sem);

    printf("程序结束\n");
    return 0;
}
